package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.SelectResultVo;
import com.zb.entity.SelectVo;
import com.zb.entity.ZjNetworkEmp;
import com.zb.result.PageUtil;
import com.zb.view.ViewNetworkEmpDetail;
import com.zb.vo.NetworkEmpSelectVo;
import com.zb.vo.NetworkEmpVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 网点人员表 服务类
 * </p>
 *
 * @author WEN
 * @since 2023-10-18
 */
public interface ZjNetworkEmpService extends IService<ZjNetworkEmp> {

    /**
     * 保存网点负责人
     *
     * @param accountId 登录账号ID
     * @return
     */
    Long saveNetworkManager(Long accountId);

    /**
     * 新增或修改服务商人员
     * @param custAccId 商家ID
     * @param networkEmpVo
     */
    void save(Long custAccId, NetworkEmpVo networkEmpVo);

    /**
     * 获取服务人员列表
     * @param custAccId 商家ID
     * @param selectVo 搜索对象
     * @return
     */
    Map<String, Object> getList(Long custAccId, NetworkEmpSelectVo selectVo);

    /**
     * 获取服务商详情之服务商人员列表
     * @param custAccId 商家ID
     * @param networkId 服务商ID
     * @param pageUtil
     * @return
     */
    Map<String, Object> getNetworkDetailEmpList(Long custAccId, Long networkId, PageUtil pageUtil);

    /**
     * 获取服务商详情之服务商人员列表的详情
     * @param custAccId 商家ID
     * @param id 服务人员ID
     * @param empRelationId 服务商人员关联ID
     * @return
     */
    NetworkEmpVo getDetail(Long custAccId, Long id, Long empRelationId);

    /**
     * 根据服务人员关联ID删除服务商人员
     * @param empRelationId 服务人员关联ID
     */
    void deleteNetworkEmp(Long empRelationId);

    /**
     * 根据服务人员ID获取人员信息
     * @param id 服务人员ID
     * @return
     */
    ViewNetworkEmpDetail getInfoById(Long id);

    /**
     * 根据服务人员ID获取人员信息
     *
     * @param ids 服务人员信息
     * @return
     */
    List<ViewNetworkEmpDetail> getInfoByIds(List<Long> ids);

    /**
     * 获取服务商人员下拉数据
     * @param networkId 服务商ID
     * @param selectVo 查询条件
     * @return
     */
    Map<String, Object> getNetworkEmpPageSelect(Long networkId, SelectVo selectVo);

    /**
     * 根据账号ID获取服务商人员信息
     * @param accountId 账号ID
     * @return
     */
    ZjNetworkEmp getByAccountId(Long accountId);

    /**
     * 根据服务商人员ID获取确认接单策略
     * @param id 服务商人员ID
     * @return false-手动确认接单，true-自动确认接单
     */
    Boolean isAutoSureReceiveOrderById(Long id);

    /**
     * 获取服务商人员及地址下拉数据
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getNetworkEmpAddressPageSelect(Long custAccId, SelectVo selectVo);

    /**
     * 根据商家获取服务人员下拉数据
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getNetworkEmpSelect(Long custAccId, SelectVo selectVo);

}
